<?php
/**
 * JSON处理类
 *
 * 需要PHP安装JSON模块
 * 
 * @version $Id: IJSON.php 312 2008-04-23 16:29:38Z iwind $
 * @package util.json
 */
class IJSON extends IAbstractView {
	private $source;
		
	/**
	 * 编码前的数据
	 *
	 * @param mixed $source 编码前的数据
	 */
	public function __construct($source) {
		$this->source = $source;
	}
	
	public function name() {
		return "json";
	}
	
	/**
	 * 取得编码前的数据
	 *
	 * @return mixed
	 */
	public function source() {
		return $this->source;
	}
	
	/**
	 * 转换为字符串
	 *
	 * @return string
	 */
	public function __toString() {
		if (!function_exists("json_encode")) {
			throw new IException("before use IModelAndJSON, you must install pecl module 'JSON' from http://pecl.php.net");
		}
		return json_encode($this->source);
	}
	
	/**
	 * 解码JSON字符串
	 *
	 * @param string $json JSON字符串
	 * @param boolean $assoc 是否以关联数组的形式返回，为false时将数据作为对象的属性返回
	 * @return mixed
	 */
	public static function decode($json, $assoc = true) {
		if (!function_exists("json_decode")) {
			throw new IException("before use IModelAndJSON, you must install pecl module 'JSON' from http://pecl.php.net");
		}
		return json_decode($json, $assoc);
	}
	
	/**
	 * 执行
	 *
	 */
	public function display() {
		echo $this->__toString();
	}
	
	/**
	 * 添加键值对
	 *
	 * @param mixed $key 键
	 * @param mixed $value 值
	 * @since 0.1
	 */
	public function put(array $values = null) {
		return;
	}	
}

?>